package com.yisu.auction.api.core.service;

import com.yisu.auction.api.domain.request.prizePackage.*;
import com.yisu.auction.api.domain.vo.PrizePackageVos.HistoricalTendencyVo;
import com.yisu.auction.api.domain.vo.PrizePackageVos.PrizeInformationVo;
import com.yisu.auction.api.domain.vo.goodsInfoPackageVos.*;
import com.yisu.auction.api.domain.vo.indexPackageVos.PrizeListVo;
import com.yisu.auction.ewf.entity.Prize;

import java.util.List;

/**
 * author: 赵杰
 * Business Description：奖品业务接口
 * createTime：2017/8/16
 */
public interface IPrizeService {
    /**
     * author: 赵杰
     * Business Description：通过列表类型，获取奖品列表
     * @param prizeListRequest 列表类型 1 进行中 2新手专区 3 我在拍
     * @return
     */
    List<PrizeListVo> getPrizeList(PrizeListRequest prizeListRequest);


    /**
     * author: 赵杰
     * Business Description：通过竞品ID获取竞品详情
     * @param prizeDetailRequest 含竞品ID
     * @return
     */
    PrizeVo getPrizeDetailByPrizeId(PrizeDetailRequest prizeDetailRequest);

    /**
     * author: 赵杰
     * Business Description：通过prizeId获取竞品实体
     * @param prizeId
     * @return
     */
    Prize getPrizeModelByPrizeId(Long prizeId);


    /**
     * author: 赵杰
     * Business Description：通过竞品ID获取下期prizeId
     * @param prizeId
     * @return
     */
    long getNextPeriodPrizeIdByPrizeId(long prizeId);

    /**
     * author: 赵杰
     * Business Description：通过商品ID获取下期prizeId
     * @param goodsId
     * @return
     */
    long getNextPeriodPrizeIdByGoodsId(long goodsId);

    /**
     * author: 赵杰
     * Business Description：更新竞品
     * @param updateModel
     * @return
     */
    boolean updatePrizeSelective(Prize updateModel);


    /**
     * author: 赵杰
     * Business Description：通过竞品ID往期记录
     * @param previousRecordRequest 含prizeId
     * @return
     */
    List<PreviousRecordVo> getPreviousRecordListByPrizeId(PreviousRecordRequest previousRecordRequest);


    /**
     * author: 赵杰
     * Business Description：获取商品类型列表
     * @return
     */
    List<GoodsTypeVo> getGoodsTypeList(GoodsTypeRequest goodsTypeRequest);


    /**
     * author: 赵杰
     * Business Description：通过类型ID获取竞品ID
     * @param prizeListRequest 类型ID
     * @return
     */
    List<PrizeListVo> getPrizeListByGoodsTypeId(PrizeListRequest prizeListRequest);

    /**
     * author: 赵杰
     * Business Description：获取最新揭晓列表
     * @param latestAnnouncedRequest
     * @return
     */
    List<LatestAnnouncedVo> getLatestAnnouncedList(LatestAnnouncedRequest latestAnnouncedRequest);

    /**
     * author:黄萧林
     * Business Description:获取竞拍数据
     * @param mineAuctionListRequest
     * @return
     */
    List<PrizeVo> getMineAuctionList(MineAuctionListRequest mineAuctionListRequest);

    /**
     * author:黄萧林
     * Business Description:获取历史走势页面商品信息
     * @param historicalTendencyRequest
     * @return
     */
    PrizeInformationVo getPrizeInfo(HistoricalTendencyRequest historicalTendencyRequest);
    /**
     * author:黄萧林
     * Business Description:获取历史走势数据列表
     * @param historicalTendencyRequest
     * @return
     */
    List<HistoricalTendencyVo> getHistoricalTendencyListByPrizeId(HistoricalTendencyRequest historicalTendencyRequest);


    /**
     * author:赵杰
     * Business Description:通过prizeId获取竞拍结果
     * @param prizeId
     * @return
     */
    AuctionResultVo getAuctionResultByPrizeId(long prizeId);

    /**
     * 绑定收货地址
     * @param prizeId prizeId
     * @param addressId 收货地址绑定ID
     * @return
     */
    boolean bandingAddress(long prizeId,long addressId);

}
